315M无线模块+单片机的无线系统 |
来源: 网易博客 作者:未知 摘录:2008-08-15 |
1.引 言 |
本篇文章简单描述了对舰上16枚火箭进行遥控点火zui基本的芯片通信调试过程。 2.使用的315芯片的资料: 3. 遥控端信号发射部分的电路(测试用) 4. 原理 ⑴用定时器产生制定脉宽的脉冲 ⑵用计数器计算接收到脉冲的宽度 GATE=1时(门控方式), 启动计数器的条件 TR=1且INT0=1。所以利用这点,可以测量外部脉冲的高电平宽度 7. 单片机调试程序 *步的调试不停发送1( 一个位) ,观察接收到的信号是否正常。有示波器的话非常方便直观,如果没有示波器,那么可以在单片机上接16个LED灯,将TH0显示在P2口的8个灯,TL0显示在P0的8个灯。比如收到脉宽900us的信号,那么TL0=11000010B TH0=1B ,下排P2口左边第二个和右边zui后两个灯亮,上排P0口左边*个亮。然而实验中发现实际接收到的脉宽比预计的平均少20us,但是这丝毫不会影响接收数据的正确性,因为在这个协议中只要判断TH0和TL0的高4位就足以识别是1或0了发送程序关键部分如下。 略 第二步的调试发送一字节数据( 8个位) ,并显示在P2口上ORG 0000H AJMP MAIN ORG 0010H MAIN: MOV TMOD,#01H CLR C MOV R5,#08H aa: MOV A,#10101010B acall send mov a,#01010101b acall send mov a,#11110000b acall send mov a,#1111b acall send ajmp aa send: MOV TH0,#00fcH MOV TL0,#0018H SETB P1.0 SETB TR0 JNB TF0,$ CLR P1.0 CLR TF0 MOV TH0,#00FCH MOV TL0,#0025H SETB TR0 JNB TF0,$ CLR TF0 SS: RLC A JC S1 AJMP S0 S1: MOV TH0,#00feH MOV TL0,#003fH SETB P1.0 SETB TR0 JNB TF0,$ CLR P1.0 CLR TF0 MOV TH0,#00FCH MOV TL0,#0025H SETB TR0 JNB TF0,$ CLR TF0 AJMP OUT s0: MOV TH0,#00ffH MOV TL0,#001fH SETB P1.0 SETB TR0 JNB TF0,$ CLR P1.0 CLR TF0 MOV TH0,#00FCH MOV TL0,#0025H SETB TR0 JNB TF0,$ CLR TF0 ajmp out OUT: DJNZ R5,SS clr c mov a,#10101010b mov r5,#08h ret DELAY: mov R0,#05Fh w_1: mov R1,#0fFh w_2: djnz R1,w_2 djnz R0,w_1 RET 接收端的电路(测试) 如果顺利,那么在接收芯片的数据输出端也会产生900us脉宽的脉冲波。如果没有示波器,那么怎么知道接受到信号的脉宽呢?我在P2口接了8个LED。读取TH0 TL0 里的数值,取反,然后依次在P2上显示。比如900us脉宽对应TH0=11B TL0=10000100B,对应位为1折亮,所以当显示TH0的时候zui左边的两个LED会被点亮,而显示TL0的时候从左往右:第三个和zui后一个亮。但事实上脉冲信号存在20us的误差。然而这丝毫不影响遥控的准确性,因为我是取900us表示1,450us表示0,然后根据8个1或0组成一个字节的控制码。具体的通信协议就不在这啰嗦了 接收部分测试用的代码 ORG 0000H AJMP MAIN org 0003h ajmp TF ORG 0050H MAIN: SETB IT0 CLR IE0 MOV TMOD,#00001001B MOV TH0,#00H MOV TL0,#00H MOV IE,#10000001B ajmp $ TF: acall det MOV A,TH0 CJNE A,#07H,diuqi AJMP DETECT detect: acall det MOV A,TH0 CJNE A,#03H,S_C AJMP SETB1 S_C:MOV A,TH0 CJNE A,#01h,ERROR AJMP SETB0 SETB1: MOV A,R7 SETB C RLC A MOV R7,A DJNZ R3,DETECT AJMP OUT SETB0: MOV A,R7 CLR C RLC A MOV R7,A DJNZ R3,DETECT AJMP OUT det: mov th0,#00h mov tl0,#00h JB P3.2,detect SETB TR0 S_2: JNB P3.2,S_2 s_3: JB P3.2,s_3 clr tr0 ret diuqi: acall fuwei reti ERROR: clr p0.7 acall delay setb p0.7 acall delay acall fuwei RETI OUT: clr p0.6 CPL A mov p2,A mov r4,#20h del:acall delay djnz r4,del setb p0.6 mov p2,#0ffh acall delay acall fuwei reti fuwei: mov TH0,#00h mov TL0,#00h MOV R3,#08H MOV R6,#02H clr ie0 ret DELAY: mov R0,#061h w_1: mov R1,#0ffh w_2: djnz R1,w_2 djnz R0,w_1 RET |
注:本资料摘自网络,如有侵害作者利益,请将把其删除。另,本电路我们未实际测试仅供参考,如电路中存在问题请作者本人谢谢! |
免责声明:矿库网文章内容来源于网络,为了传递信息,我们转载部分内容,尊重原作者的版权。所有转载文章仅用于学习和交流之目的,并非商业用途。如有侵权,请及时联系我们删除。感谢您的理解与支持。